package br.com.iswe.core.entidades.helper;

import java.util.List;

import br.com.iswe.core.entidades.annotation.GeradorConfig;
import br.com.iswe.core.entidades.info.InfoEntidade;

public class SecurityHelper {
	private static final String END_ANNOTATION = "})";
	private static final String COMA = ", ";
	private static final String SIMBOL_ASPAS_DUPLAS = "\"";
	private static final String ANNOTATION_SECURED = "@Secured({";
	public static final String HELPER_NAME = "SecurityHelper";
	
	/**
	 * Metodo que ajuda que descobre e informa se a entidade possui
	 * configuracao de seguranca.
	 * @param infoEntidade
	 * @return
	 */
	public boolean isAplicarSeguranca(InfoEntidade infoEntidade){
		boolean retorno = false;
		GeradorConfig config = infoEntidade.getGeradorConfig(); 
		if(config != null){
			return config.securityStrategy().length > 0;
		}
		return retorno;
	}
	/**
	 * Apartir de uma lista de ROLE's gera uma tag Secured:
	 * @Secured({"ROLE_X", "ROLE_Y"})
	 * @param listaRoles
	 * @return
	 */
	public String getAnnotationSecured(List<String> listaRoles){
		StringBuffer tagSecured = new StringBuffer(ANNOTATION_SECURED);
		for (int i = 0; i < listaRoles.size(); i++) {
			String role = listaRoles.get(i);
			tagSecured.append(SIMBOL_ASPAS_DUPLAS);
			tagSecured.append(role);
			tagSecured.append(SIMBOL_ASPAS_DUPLAS);
			if(i < listaRoles.size()-1){
				tagSecured.append(COMA);
			}
		}
		tagSecured.append(END_ANNOTATION);
		return tagSecured.toString();
	}
}
